Skip to main content

Humble

Category Supported by Robotiq

The robotiq_tsf ROS 2 Humble package publishes the TSF-85 tactile sensor's static, dynamic, IMU, and fused-orientation data as ROS topics. It is available in the following repository:

Build​

Clone the repository into your ROS 2 workspace's src/ folder and build with colcon:

cd ~/ros2_ws/src
git clone https://github.com/robotiq/ros.git
cd ~/ros2_ws
colcon build --packages-select robotiq_tsf
source install/setup.bash

Run​

Launch the sensor node — library-backed, so it parses the sensor via the extern/tactile_sensors submodule; clone with --recurse-submodules (or git submodule update --init afterward) for this to build:

ros2 run robotiq_tsf poll_data_sdk_node

The device is autodetected (udev symlink, then USB descriptor); override with --ros-args -p device:=/dev/ttyACM0.

The node publishes on the following topics:

TopicMessage TypeDescription
TactileSensor/StaticDatarobotiq_tsf/StaticDataTaxel pressure data — two fingers, each with 28 uint16 values
TactileSensor/Dynamicrobotiq_tsf/DynamicDynamic force data — two fingers, each with one int16 value
TactileSensor/Accelerometerrobotiq_tsf/AccelerometerRaw accelerometer — two readings of [x, y, z] int16
TactileSensor/Gyroscoperobotiq_tsf/GyroscopeRaw gyroscope — two readings of [x, y, z] int16
TactileSensor/EulerAnglerobotiq_tsf/EulerAngleFused orientation — two readings of [roll, pitch, yaw] float32
TactileSensor/Quaternionrobotiq_tsf/QuaternionFused orientation — two readings of [w, x, y, z] float64
TactileSensor/Timestamprobotiq_tsf/TimestampPer-finger firmware timestamp — two uint16 values

EulerAngle and Quaternion are only published once the IMU bias calibration period completes at startup — keep the sensor still during this time.

Tactile visualization (RViz)​

tactile_viz_node renders TactileSensor/StaticData as per-taxel 3D markers and per-finger 2D heatmap images, with the pad TFs to place them:

ros2 launch robotiq_tsf tactile_viz.launch.py # driver + viz + RViz, standalone
ros2 launch robotiq_tsf gripper_tactile_viz.launch.py \
com_port:=/dev/ttyUSB0 # single window: 2F-85 gripper + pads on its fingertips

On startup it averages the first baseline_frames messages into a per-taxel baseline and subtracts it — re-zero anytime with ros2 topic pub --once /tactile_viz/zero std_msgs/msg/Empty.

Docker​

The repository's docker/ folder provides scripts to build and run the driver in a container, with sensor devices mapped in automatically. Clone with submodules to pull in the required utilities:

git clone --recurse-submodules https://github.com/robotiq/ros.git

If you already cloned without --recurse-submodules:

git submodule update --init
ScriptDescription
build_launch_docker_ros2.shBuilds the Docker image and launches a container with sensor devices mapped in
sensor_install.shSets up udev rules and permissions for bare-metal (non-Docker) use